This invention relates generally to the composition of model transformations, and more particularly to the automatic composition of model transformations to produce complex transformations for transforming input models into desired states.
Model-driven engineering (MDE) is a technique employed in various engineering fields such as software, system and data engineering. MDE involves the systematic use of models as primary engineering artifacts. As part of the engineering process, model transformation algorithms may be employed for converting models from an initial state to a desired, target state. For example, in model-driven software development or model-driven business transformation, the transformation of models such as models defined in the Unified Modeling Language (UML) plays an important role. Model transformations are integral components which facilitate techniques such as aspect-oriented modeling, system automation, platform independence via Model Driven Architecture (MDA), and so forth. Transformations can be arbitrarily complex, and thus a decomposition of transformations is desirable. Each transformation should ideally be as simple and general as possible to reduce complexity and increase reusability. Complex transformations can then be expressed as a composition of atomic or complex transformations.
There are, as yet, no established methodology or standard techniques for the composition of transformations. A composite transformation is usually defined by a program or a workflow in which atomic transformations are the main actions. This workflow description has to be created by a developer who needs in-depth knowledge about the semantics of the transformation in order to respect dependencies between the transformations. A problem here is that execution of a transformation may not run correctly, leading to failure of the overall process. Another problem is that transformations can be non-deterministic. That is, the transformation may have more than one possible outcome depending on some aspect of a model being transformed. Where execution of a constituent transformation does not run deterministically, the overall complex transformation process can fail just as with a transformation error. Problems of this kind are not addressed by current model transformation tools and make model transformations a challenge for both tools and users.